A Large-scale Empirical Study of Java Language Feature Usage
نویسندگان
چکیده
Programming languages evolve over time, adding additional language features to simplify common tasks and make the language easier to use. For example, the Java Language Specification has four editions and is currently drafting a fifth. While the addition of language features is driven by an assumed need by the community (often with direct requests for such features), there is little empirical evidence demonstrating how these new features are adopted by developers once released. In this paper, we analyze over 23k open-source Java projects representing over 7 million Java files, which when parsed contain over 14 billion AST nodes. We analyze this corpus to find uses of new Java language features over time. Our study gives interesting insights, such as: the fact that while all features are used, there are still millions of more places they could potentially be used; all features are used before release; and features tend to be adopted by committers on an individual basis rather than as a team.
منابع مشابه
How Do Java Programs Use Inheritance? An Empirical Study of Inheritance in Java Software
Inheritance is a crucial part of object-oriented programming, but its use in practice, and the resulting large-scale inheritance structures in programs, remain poorly understood. Previous studies of inheritance have been relatively small and have generally not considered issues such as Java’s distinction between classes and interfaces, nor have they considered the use of external libraries. In ...
متن کاملThe Reaction of Open-Source Projects to New Language Features: An Empirical Study of C# Generics
Language designers introduce new language features in programming languages because those features are claimed to be bene cial. In this paper, we investigate claims made about the generics language feature, and compare how those claims stack up in C# versus Java. Through an empirical study of the generics feature in open-source projects, we found that (1) although they have the same claimed ben...
متن کاملAn empirical study of overriding in open source Java
Inheritance is a key feature of object-oriented programming. Overriding is one of the most important parts of inheritance, allowing a subclass to replace methods implemented in its superclass. Unfortunately, the way programmers use overriding in practise is not well understood. We present the first large-scale empirical study of overriding. We describe a suite of metrics that measure overriding...
متن کاملProactive Empirical Assessment of New Language Feature Adoption via Automated Refactoring: The Case of Java 8 Default Methods
Programming languages and platforms improve over time, sometimes resulting in new language features that offer many benefits. However, despite these benefits, developers may not always be willing to adopt them in their projects for various reasons. In this paper, we describe an empirical study where we assess the adoption of a particular new language feature. Studying how developers use (or do ...
متن کاملOn the Benefits of Combining Functional and Imperative Programming for Multicore Software An Empirical Study Comparing Scala and Java
Recent multi-paradigm programming languages combine functional and imperative programming styles to make software development easier. Given today’s proliferation of multicore processors, parallel programmers are supposed to benefit from this combination, as many difficult problems can be expressed more easily in a functional style while others match an imperative style. However, due to a lack o...
متن کامل